﻿namespace CoverageRunner.Core;

public interface ICoverageRunner
{
    enum OpenType
    {
        Explorer, // 在资源管理器中显示
        Browser,  // 直接在浏览器里展示
    }
    
    /// <summary>
    /// 使用运行配置初始化运行器
    /// </summary>
    /// <param name="config">配置参数</param>
    public void Initialize(RunnerConfig config);

    /// <summary>
    /// 获取命令行版本，可以保存为批处理
    /// </summary>
    /// <returns>需要执行的命令</returns>
    public string GetCommandLine();

    /// <summary>
    /// 打开生成的覆盖率报告
    /// </summary>
    /// <param name="openType">使用那种方式打开</param>
    public void OpenCoverageReport(OpenType openType);

    /// <summary>
    /// 执行测试并生成覆盖率报告
    /// </summary>
    public void Run();

    /// <summary>
    /// 获取执行器的ID，匹配配置里的 RunnerId
    /// </summary>
    public string Id { get; }
}